/* 
 * Enterprise Library Extensions - DI + ORM.
 * Copyright (C) 2006
 *
 * GNU General Public License
 *
 * This program is free software; you can redistribute 
 * it and/or modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 of the 
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 * See the GNU General Public License for more details.
 */
using System;

namespace ELE.EnterpriseLibrary.Naming
{
	/// <summary>
  /// This interface is implemented by an object that can provide a Reference to itself. 
  /// A Reference represents a way of recording address information about objects which 
  /// themselves are not directly bound to the naming system. Such objects can implement the 
  /// IReferenceable interface as a way for programs that use that object to determine what 
  /// its Reference is. For example, when binding a object, if an object implements the 
  /// IReferenceable interface, getReference() can be invoked on the object to get its 
  /// Reference to use for binding. 
	/// </summary>
	public interface IReferenceable
	{
    /// <summary>
    /// Retrieves the Reference of this object
    /// </summary>
    /// <exception cref="NamingException">Can throw a naming exception</exception>
    Reference Reference { get; }
	}
}
